package proxy

import "fmt"

/*
使用代理模式实现，人购买房间，购买方和中介需要做的事情
*/

// 定义代理接口
type Proxy interface {
	preBuy()
	afterBuy()
	doWork()
}

// 购买方
type Proxyee struct {
}

func (p Proxyee) doWork() {
	fmt.Println("买方付款...")
}

// 代理方
type Proxyer struct {
	//购买方结构体
	proxy *Proxyee
}

func NewProxyer(p *Proxyee) *Proxyer {
	return &Proxyer{proxy: p}
}

func (*Proxyer) preBuy() {
	fmt.Printf("带人看房介绍...")
}

func (*Proxyer) afterBuy() {
	fmt.Println("办理交房手续...")
}

func (p *Proxyer) doWork() {
	p.preBuy()
	p.proxy.doWork()
	p.afterBuy()
}
